// pages/member/rankingListSecond/rankingListSecond.js
var app = getApp();
let myCanvasWidth = null;
let myCanvasHeight = null;
let unit = "";
let iconFrom = {};
Page({
  /**
   * 页面的初始数据
   */
  data: {
    loadingImg: true,
    card_id: "",
    cardData: {
      card_statistics: {},
    },
    cardDataInfo: {
      card_statistics: {},
    },
    area_name: "",
    role_name: {},
    drawing: [],
    savebtnText: "保存名片图片",
    // 画图
    avatar: "",
    // 本地存储的数据
    card_mobile: "/image/card_img_b.png",
    card_wechat: "/image/card_img_c.png",
    area_nameIcon: "/image/card_img_d.png",
    visit: "/image/card_img_a.png",
    canvasWidth: "",
    canvasHeight: "",
    showBtn: false,
    ithumb: "",
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      card_id: options.card_id,
    });
    if (options.mid) {
      app._setMid(options.mid);
    }

    wx.getSystemInfo({
      success: (res) => {
        unit = res.windowWidth / 375;
        myCanvasWidth = 343 * unit;
        myCanvasHeight = 510 * unit;
        this.setData({
          canvasWidth: myCanvasWidth,
          canvasHeight: myCanvasHeight,
        });
      },
    });

    wx.showLoading({
      title: "绘图中",
    });

    if (options.from === "share") {
      this.setData({
        from_sta: 1,
      });
      this.getCardDate();
    } else {
      this.startDraw();
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    wx.showShareMenu({
      withShareTicket: false,
      menus: ["shareAppMessage", "shareTimeline"],
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {},

  /**
   * 用户点击右上角分享
   */
  onShareTimeline() {
    var value = wx.getStorageSync("yz_uid");
    var mid = "";
    if (value) {
      mid = value;
    }
    return {
      query: `card_id=${this.data.card_id}&mid=${mid}&from=share`,
    };
  },
  onShareAppMessage: function () {
    var value = wx.getStorageSync("yz_uid");
    var mid = "";
    if (value) {
      mid = value;
    }
    return {
      path: "/packageB/member/business_card/BusinessCard/BusinessCard?card_id=" + this.data.card_id + "&mid=" + mid + "&from=share",
    };
  },

  startDraw() {
    wx.getStorage({
      key: "iconFrom",
      success: (res) => {
        this.setData({
          visit: res.data.visit,
          card_mobile: res.data.card_mobile,
          card_wechat: res.data.card_wechat,
          area_nameIcon: res.data.area_nameIcon,
          "cardData.card_avatar": res.data.card_avatar,
          "cardData.background": res.data.background,
          "cardData.min_code": res.data.min_code,
        });
        wx.getStorage({
          key: "info",
          success: (res) => {
            this.setData({
              "cardData.card_name": res.data.card_name,
              "cardData.card_mobile": res.data.card_mobile,
              "cardData.card_wechat": res.data.card_wechat,
              "cardData.area_name": res.data.area_name,
              "cardData.card_statistics.visit": res.data.visit,
              "cardData.shop_name": res.data.shop_name,
              "cardData.role_name": res.data.role_name,
            });
            this.getAvaterInfo();
          },
          fail: (error) => {
            wx.showToast({
              title: error,
              icon: "none",
            });
          },
        });
      },
      fail: (error) => {
        wx.showToast({
          title: error,
          icon: "none",
        });
      },
    });
  },
  getCardDate() {
    let urlStr = app.getNetAddresss("plugin.business-card.frontend.controllers.center.card.index");
    app._getNetWork({
      url: urlStr,
      success: (resdata) => {
        var response = resdata.data;
        if (response.result == 1) {
          let area_name = null;
          if (response.data.area_name.length != 0) {
            if (response.data.area_name[3] == null) {
              response.data.area_name[3] = "";
            }
            if (response.data.has_one_card.address == null) {
              response.data.has_one_card.address = "";
            }
            area_name = response.data.area_name[0] + response.data.area_name[1] + response.data.area_name[2] + response.data.area_name[3] + response.data.has_one_card.address;
          }

          this.setData({
            cardData: response.data,
            cardMessage: response.data.has_one_card,
            role_name: response.data.role_name,
            area_name: area_name,
          });
          if (!this.data.from_sta) {
            this.setData({
              card_id: response.data.has_one_card.id,
            });
          }
          this.getData();
        } else {
          wx.showToast({
            title: response.msg,
            icon: "none",
          });
          setTimeout(() => {
            wx.reLaunch({
              url: "/packageG/index/index",
            });
          }, 2000);
        }
      },
      fail: function (res) {
        console.log(res);
      },
    });
  },
  getData() {
    let urlStr = app.getNetAddresss("plugin.business-card.frontend.controllers.center.card-pic.index");
    urlStr += "&card_id=" + this.data.card_id + "&card_type=1";
    app._getNetWork({
      url: urlStr,
      success: (resdata) => {
        var response = resdata.data;
        if (response.result == 1) {
          this.setData({
            cardDataInfo: response.data,
            role_name: response.data.role_name,
          });
          this.saveImg();
          let area_name = "";
          if (this.data.cardData.area_name[0]) {
            area_name = this.data.cardData.area_name[0] + this.data.cardData.area_name[1] + this.data.cardData.area_name[2] + this.data.cardData.area_name[3] + this.data.cardData.has_one_card.address;
          }
          let info = {};
          if (response.data.role_name.level_name == null) {
            response.data.role_name.level_name = "";
          }
          info.card_name = response.data.card_name;
          info.card_mobile = response.data.card_mobile;
          info.card_wechat = response.data.card_wechat;
          info.area_name = area_name;
          info.visit = "人气" + response.data.card_statistics.visit;
          info.card_name = response.data.card_name + "名片码";
          info.shop_name = `名片由【${response.data.shop_name}】生成`;
          info.role_name = response.data.role_name.role_name + "|" + response.data.role_name.level_name;
          wx.setStorage({
            key: "info",
            data: info,
          });
        } else {
          // wx.showToast({
          //   title: response.msg,
          //   icon: 'none'
          // })
        }
      },
      fail: function (res) {
        console.log(res);
      },
    });
  },
  // 网络图标存本地
  saveImg() {
    wx.getImageInfo({
      src: this.data.visit,
      success: (res) => {
        console.log(res);
        this.setData({
          visit: res.path,
        });
        iconFrom.visit = this.data.visit;
        wx.setStorage({
          key: "iconFrom",
          data: iconFrom,
        });
      },
      fail: function (res) {
        // 失败回调
        console.log(res, "错误的回调1");
      },
    });
    wx.getImageInfo({
      src: this.data.card_mobile,
      success: (res) => {
        console.log(res);
        this.setData({
          card_mobile: res.path,
        });
        iconFrom.card_mobile = this.data.card_mobile;
        wx.setStorage({
          key: "iconFrom",
          data: iconFrom,
        });
      },
      fail: function (res) {
        // 失败回调
        console.log(res, "错误的回调2");
      },
    });
    wx.getImageInfo({
      src: this.data.card_wechat,
      success: (res) => {
        this.setData({
          card_wechat: res.path,
        });
        iconFrom.card_wechat = this.data.card_wechat;
        wx.setStorage({
          key: "iconFrom",
          data: iconFrom,
        });
      },
      fail: function (res) {
        // 失败回调
        console.log(res, "错误的回调3");
      },
    });
    wx.getImageInfo({
      src: this.data.area_nameIcon,
      success: (res) => {
        this.setData({
          area_nameIcon: res.path,
        });
        iconFrom.area_nameIcon = this.data.area_nameIcon;
        wx.setStorage({
          key: "iconFrom",
          data: iconFrom,
        });
      },
      fail: function (res) {
        // 失败回调
        console.log(res, "错误的回调4");
      },
    });
    wx.downloadFile({
      url: this.data.cardDataInfo.background, // 服务器返回的图片地址
      success: (res) => {
        // res.tempFilePath是网络图片的本地地址
        let Path = res.tempFilePath;
        this.setData({
          "cardDataInfo.background": Path,
        });
        iconFrom.background = res.tempFilePath;
        wx.setStorage({
          key: "iconFrom",
          data: iconFrom,
        });
      },
      fail: function (res) {
        // 失败回调
      },
    });
    wx.downloadFile({
      url: this.data.cardDataInfo.card_avatar, // 服务器返回的图片地址
      success: (res) => {
        // res.tempFilePath是网络图片的本地地址
        this.setData({
          "cardDataInfo.card_avatar": res.tempFilePath,
        });
        iconFrom.card_avatar = res.tempFilePath;
        wx.setStorage({
          key: "iconFrom",
          data: iconFrom,
        });
        setTimeout(() => {
          this.startDraw();
        }, 2000);
      },
      fail: function (res) {
        // 失败回调
        console.log(res, "失败");
      },
    });

    wx.downloadFile({
      url: this.data.cardDataInfo.min_code, // 服务器返回的图片地址
      success: (res) => {
        // res.tempFilePath是网络图片的本地地址
        this.setData({
          "cardDataInfo.min_code": res.tempFilePath,
        });
        iconFrom.min_code = res.tempFilePath;
        wx.setStorage({
          key: "iconFrom",
          data: iconFrom,
        });
      },
      fail: function (res) {
        // 失败回调
        console.log(res, "错误的回调");
      },
    });
  },
  // 画图
  getAvaterInfo() {
    const ctx = wx.createCanvasContext("myCanvas");
    // 画banner图
    ctx.fillStyle = "#FFFFFF";

    ctx.fillRect(0, 0, this.data.canvasWidth + 20, this.data.canvasHeight);
    if (!app._isTextEmpty(this.data.cardData.background)) {
      ctx.drawImage(this.data.cardData.background, (this.data.canvasWidth + 20 - 335 * unit) / 2, 0 + 20, 335 * unit, 160 * unit);
    }
    // 头像
    const headWH = 120 / 2; // 头像的框高
    {
      let avatarurl_width = headWH; // 绘制的头像宽度
      let avatarurl_heigth = headWH; // 绘制的头像高度
      let avatarurl_x = 15 * unit; // 绘制的头像在画布上的位置
      let avatarurl_y = 181 * unit; // 绘制的头像在画布上的位置
      ctx.save();
      ctx.beginPath(); // 开始绘制
      // 先画个圆   前两个参数确定了圆心 （x,y） 坐标  第三个参数是圆的半径  四参数是绘图方向  默认是false，即顺时针
      ctx.arc(avatarurl_width / 2 + avatarurl_x, avatarurl_heigth / 2 + avatarurl_y + 20, avatarurl_width / 2, 0, Math.PI * 2, false);
      ctx.clip(); // 画好了圆 剪切  原始画布中剪切任意形状和尺寸。一旦剪切了某个区域，则所有之后的绘图都会被限制在被剪切的区域内 这也是我们要save上下文的原因
      if (!app._isTextEmpty(this.data.cardData.card_avatar)) {
        ctx.drawImage(this.data.cardData.card_avatar, avatarurl_x, avatarurl_y + 20, avatarurl_width, avatarurl_heigth); // 推进去图片，必须是https图片
      }

      ctx.restore(); // 恢复之前保存的绘图上下文 恢复之前保存的绘图上下午即状态 还可以继续绘制
    }
    //  会员名字
    ctx.setTextAlign("left"); // 文字居中
    ctx.setFillStyle("#000000"); // 文字颜色：黑色
    ctx.setFontSize(14); // 文字字号：22px
    console.log(this.data.cardData.card_name, "this.data.cardData.card_name");
    if (this.data.cardData.card_name.length > 15) {
      this.data.cardData.card_name1 = this.data.cardData.card_name.substr(0, 15);
      this.data.cardData.card_name2 = this.data.cardData.card_name.substr(15);
      ctx.fillText(this.data.cardData.card_name1, 90 * unit, 210 * unit);
    } else {
      ctx.fillText(this.data.cardData.card_name, 90 * unit, 230 * unit);
    }
    if (this.data.cardData.card_name2) {
      ctx.fillText(this.data.cardData.card_name2, 90 * unit, 230 * unit);
    }

    // 角色
    ctx.setTextAlign("left"); // 文字居中
    ctx.setFillStyle("#8c8c8c"); // 文字颜色：黑色
    ctx.setFontSize(14); // 文字字号：22px
    // if (this.data.cardData.card_name2){
    //   ctx.fillText(this.data.cardData.role_name, 140 * unit, 250 * unit)
    // }else{
    ctx.fillText(this.data.cardData.role_name, 90 * unit, 250 * unit);
    // }

    if (this.data.cardData.card_mobile != "") {
      // 电话图标
      ctx.drawImage(this.data.card_mobile, 15 * unit, 275 * unit, 20 * unit, 20 * unit);
      // 电话
      ctx.setTextAlign("left"); // 文字居中
      ctx.setFillStyle("#b0b0b0"); // 文字颜色：黑色
      ctx.setFontSize(12); // 文字字号：22px
      ctx.fillText(this.data.cardData.card_mobile, 40 * unit, 290 * unit);
    }
    if (this.data.cardData.card_wechat != "") {
      // 微信图标
      if (this.data.cardData.card_mobile == "") {
        ctx.drawImage(this.data.card_wechat, 15 * unit, 275 * unit, 20 * unit, 20 * unit);
        // 微信号
        ctx.setTextAlign("left"); // 文字居中
        ctx.setFillStyle("#b0b0b0"); // 文字颜色：黑色
        ctx.setFontSize(12); // 文字字号：22px
        ctx.fillText(this.data.cardData.card_wechat, 40 * unit, 290 * unit);
      } else {
        ctx.drawImage(this.data.card_wechat, 15 * unit, 300 * unit, 20 * unit, 20 * unit);
        // 微信号
        ctx.setTextAlign("left"); // 文字居中
        ctx.setFillStyle("#b0b0b0"); // 文字颜色：黑色
        ctx.setFontSize(12); // 文字字号：22px
        ctx.fillText(this.data.cardData.card_wechat, 40 * unit, 315 * unit);
      }
    }

    if (this.data.cardData.area_name != "") {
      if (this.data.cardData.area_name.length > 15) {
        this.data.cardData.area_name1 = this.data.cardData.area_name.substr(0, 15);
        this.data.cardData.area_name2 = this.data.cardData.area_name.substr(15);
      } else {
        this.data.cardData.area_name1 = this.data.cardData.area_name;
      }
      // 地址图标
      if (this.data.cardData.card_mobile == "" && this.data.cardData.card_wechat == "") {
        ctx.drawImage(this.data.area_nameIcon, 15 * unit, 270 * unit, 20 * unit, 20 * unit);
        // 地址
        ctx.setTextAlign("left"); // 文字居中
        ctx.setFillStyle("#b0b0b0"); // 文字颜色：黑色
        ctx.setFontSize(12); // 文字字号：22px

        ctx.fillText(this.data.cardData.area_name1, 40 * unit, 285 * unit);
        if (this.data.cardData.area_name2) {
          ctx.fillText(this.data.cardData.area_name2, 40 * unit, 300 * unit);
        }
      } else if (this.data.cardData.card_mobile == "" || this.data.cardData.card_wechat == "") {
        ctx.drawImage(this.data.area_nameIcon, 15 * unit, 300 * unit, 20 * unit, 20 * unit);
        // 地址
        ctx.setTextAlign("left"); // 文字居中
        ctx.setFillStyle("#b0b0b0"); // 文字颜色：黑色
        ctx.setFontSize(12); // 文字字号：22px

        ctx.fillText(this.data.cardData.area_name1, 40 * unit, 315 * unit);
        if (this.data.cardData.area_name2) {
          ctx.fillText(this.data.cardData.area_name2, 40 * unit, 330 * unit);
        }
      } else {
        ctx.drawImage(this.data.area_nameIcon, 15 * unit, 325 * unit, 20 * unit, 20 * unit);
        // 地址
        ctx.setTextAlign("left"); // 文字居中
        ctx.setFillStyle("#b0b0b0"); // 文字颜色：黑色
        ctx.setFontSize(12); // 文字字号：22px

        ctx.fillText(this.data.cardData.area_name1, 40 * unit, 340 * unit);
        if (this.data.cardData.area_name2) {
          ctx.fillText(this.data.cardData.area_name2, 40 * unit, 355 * unit);
        }
      }
    }
    // 人气图标
    ctx.drawImage(this.data.visit, 280 * unit, 205 * unit, 20 * unit, 35 * unit);
    // 人气
    ctx.setTextAlign("center"); // 文字居中
    ctx.setFillStyle("#f15353"); // 文字颜色：黑色
    ctx.setFontSize(14); // 文字字号：22px
    ctx.fillText(this.data.cardData.card_statistics.visit, 315 * unit, 230 * unit);
    // 二维码图片
    ctx.drawImage(this.data.cardData.min_code, 25 * unit, 385 * unit, 100, 100);
    // 名片码的人名称
    ctx.setTextAlign("center"); // 文字居中
    ctx.setFillStyle("#50a6f9"); // 文字颜色：黑色
    ctx.setFontSize(14); // 文字字号：22px
    if (this.data.cardData.card_name.length > 15) {
      this.data.cardData.card_name1 = this.data.cardData.card_name.substr(0, 15);
      this.data.cardData.card_name2 = this.data.cardData.card_name.substr(15);
      ctx.fillText(this.data.cardData.card_name1, 230 * unit, (416 - 10) * unit);
    } else {
      ctx.fillText(this.data.cardData.card_name, 230 * unit, (426 - 10) * unit);
    }
    if (this.data.cardData.card_name2) {
      // ctx.fillText(this.data.cardData.card_name2, 160 * unit, 230 * unit)
      ctx.fillText(this.data.cardData.card_name2, 230 * unit, (430 - 10) * unit);
    }
    // ctx.fillText(this.data.cardData.card_name, 230 * unit, (426 - 10) * unit)
    // 长按
    ctx.setTextAlign("center"); // 文字居中
    ctx.setFillStyle("#333"); // 文字颜色：黑色
    ctx.setFontSize(14); // 文字字号：22px
    ctx.fillText("长按识别名片码保存名片", 240 * unit, 437 * unit);
    // 生成
    ctx.setTextAlign("center"); // 文字居中
    ctx.setFillStyle("#8c8c8c"); // 文字颜色：黑色
    ctx.setFontSize(13); // 文字字号：22px
    ctx.fillText(this.data.cardData.shop_name, 240 * unit, 460 * unit);
    ctx.draw(true, this.toimage());
  },
  toimage() {
    wx.hideLoading();
    this.setData({
      showBtn: true,
    });
    let that = this;
    setTimeout(() => {
      wx.canvasToTempFilePath({
        x: 0,
        y: 0,
        width: this.data.canvasWidth + 20,
        height: this.data.canvasHeight * 4,
        destWidth: this.data.canvasWidth * 4 + 20 * 4,
        destHeight: this.data.canvasHeight,
        canvasId: "myCanvas",
        success: function (res) {
          console.log(res);
          var tempFilePath = res.tempFilePath;
          that.setData({
            ithumb: tempFilePath,
          });
        },
        fail: function (res) {
          console.log(res);
        },
      });
    }, 1000);
  },
  // 预览
  previewImage() {
    wx.canvasToTempFilePath({
      x: 0,
      y: 0,
      width: this.data.canvasWidth + 20,
      height: this.data.canvasHeight,
      destWidth: this.data.canvasWidth * 4 + 20 * 4,
      destHeight: this.data.canvasHeight * 4,
      canvasId: "myCanvas",
      success: function (res) {
        var tempFilePath = res.tempFilePath;
        console.log(tempFilePath);
        wx.showToast({
          title: "长按分享好友！",
          icon: "none",
          duration: 2000,
        });
        wx.previewImage({
          current: tempFilePath, // 当前显示图片的http链接
          urls: [tempFilePath], // 需要预览的图片http链接列表
        });
      },
      fail: function (res) {
        console.log(res);
      },
    });
  },
  // 点击保存到相册
  saveShareImg: function () {
    wx.showLoading({
      title: "保存中",
    });
    wx.canvasToTempFilePath({
      x: 0,
      y: 0,
      width: this.data.canvasWidth + 20,
      height: this.data.canvasHeight,
      destWidth: this.data.canvasWidth * 4 + 20 * 4,
      destHeight: this.data.canvasHeight * 4,
      canvasId: "myCanvas",
      success: function (res) {
        console.log(res);
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
          success(result) {
            wx.showToast({
              title: "图片保存成功",
              icon: "success",
              duration: 2000,
            });
          },
          fail: (res) => {
            wx.hideLoading();
          },
        });
      },
    });
  },
});
